Skip to content

feat(ai): 新增聊天助手、智能检索与关注提醒,修复联系人加载及导出失败 - #142

Merged
2977094657 merged 17 commits into
LifeArchiveProject:mainfrom
xiaoshengbao:main
Sep 9, 2026
Merged

feat(ai): 新增聊天助手、智能检索与关注提醒,修复联系人加载及导出失败#142
2977094657 merged 17 commits into
LifeArchiveProject:mainfrom
xiaoshengbao:main

Conversation

@xiaoshengbao

@xiaoshengbao xiaoshengbao commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

为聊天记录增加 AI 问答、总结、关注提醒和本地智能检索,并修复联系人加载失败及并发导出完成后报 BUSY 的问题。

AI 聊天助手与自动任务

  • 新增统一的 AI 服务配置,支持 OpenAI 兼容接口、Claude,以及 Ollama、LM Studio 等本地服务;支持从服务商获取模型、连接测试、文本与视觉模型选择。
  • 聊天页新增可连续对话的 Agent,按授权会话和时间范围检索、读取上下文、分析附件;展示处理过程、覆盖缺口、回答依据和原消息引用,支持停止、补充要求和继续查找。
  • 支持单个或多个会话总结、间隔/定时/新增消息条数任务,以及自然语言关注条件和桌面通知。
  • 保存任务历史、检查点和逐次模型用量;增加失败重试、暂停恢复及诊断日志。

本地智能检索

  • 新增 FTS5 关键词与本地向量混合检索,保留会话、发送者、时间、消息类型过滤及原消息定位。
  • 提供 BGE Small 中文、BGE Base 中文和 Multilingual E5 Small 模型管理,支持下载校验、暂停续传、离线导入、增量索引及断点恢复。
  • 默认使用 CPU;Windows 可选 NVIDIA GPU,故障时回退 CPU。索引按账号隔离,由用户选择聊天和时间范围后启用。
  • Agent 可复用已授权范围内的索引;索引不可用时退回关键词搜索,并说明覆盖限制。

联系人加载修复

关联 #135

实时 contact 全表查询和备用接口原先会吞掉异常,上层将空列表判定为成功,仅从会话补出群聊,导致有好友数据的账号显示“好友 0”,也无法触发本地数据库回退。

本次调整:

  • 查询失败保留错误状态;实时读取失败时回退到已解密的 contact.db,没有本地库时明确报错。
  • 区分“查询失败”和“查询成功但零行”,正常空通讯录不会误回退。
  • 全量通讯录不以 stranger 或历史私聊结果冒充完整好友列表;定向资料查询保留原有兼容处理。
  • 增加查询异常、行数日志及回归测试。

已用合成数据库复现修复前“好友 0、群聊 28、接口仍成功”的情况;修复后可回退读取 306 个好友。尚未在 issue 提交者的机器上验证最初触发查询失败的底层原因。

导出完成后 BUSY 修复

实时数据库查询与 ZIP 完整性签名并发时,原实现会强制将同一个 native broker 切换成仅导出模式。已有操作持有租约时直接报 BUSY,导致消息已写完、界面显示 100% 后导出失败。

  • 签名、导出加密和解密优先复用存活的 broker;无存活进程时仍启动仅导出模式,不要求数据库目录。
  • 模式选择与租约获取在同一把锁内完成,保留严格模式检查、native 签名及授权校验。
  • 使用后台线程固定并发时序,覆盖数据库占用时的签名、加密、解密及异常清理。相同用例在未修复代码上复现 BUSY,修复后通过;相关测试 85 项通过、4 个子测试通过。
  • 用户日志中的四次失败均发生于 2.4.0,包含重启后的失败。2.4.0 新增的高频全账号实时轮询是放大冲突的可能原因;日志未记录具体占用线程,尚未将版本关联实机证实。
  • 本机缺少正式 broker 二进制,测试替换了进程与部分 native 接口,尚未完成安装包端到端验证。额外 5 项依赖真实 native 组件的完整性测试因组件缺失失败。

详细证据与验证边界见 docs/export-broker-busy-investigation-20260909.md

运行与兼容

  • 补充 LangChain/LangGraph、文档解析、ONNX 和 sqlite-vec 依赖,以及冻结程序资源收集。
  • 更新 Windows 源码原生组件引导,修复桌面首次跳转及通知生命周期处理。
  • 增加 Windows/macOS CI、使用说明、诊断文档和平台验收记录;实机覆盖边界见 docs/ai-macos-compatibility.md 和 docs/ai-macos-user-acceptance.md。

验证结果

各功能本地验证(分批执行):

检查 结果
AI/Agent/本地检索后端 191 项通过
前端 Vitest 192 项通过
桌面诊断、通知、打包、启动及 Windows 引导 17 项通过
联系人、数据源回退及原生实时读取相关测试 55 项通过
导出并发、broker 生命周期、取消响应及原生实时读取 85 项通过,4 个子测试通过

数据与密钥

  • AI 服务由用户自行配置。使用云端模型时,选定消息及参与分析的媒体会发送给该服务;本地关键词/向量检索不调用云端模型,Agent 生成回答仍遵循所选 AI 服务配置。

@xiaoshengbao xiaoshengbao changed the title feat(ai): 新增聊天助手、智能检索与关注提醒,修复联系人加载失败 feat(ai): 新增聊天助手、智能检索与关注提醒,修复联系人加载及导出失败 Sep 9, 2026
接入 models.dev 和上游模型元数据,移除 Agent 固定调用额度,集成可搜索模型选择。使用固定的 assistant-ui Vue 官方源码,增加会话导航与侧栏宽度调整,修复流式来源解析和弹窗拖选误关闭,统一工具流缩进与详情层级。

验证:前端 217 项、AI 后端及模型目录 156 项通过;生产构建及浏览器交互验收通过。
按 BLOB 读取收藏文本字段,交给业务层容错解码,避免单条异常数据中断列表或导致标签丢失;查询失败不再误报表结构不支持。

验证:61 项测试、20 个子测试通过,覆盖真实协议解析、异常字段、标签筛选及实时与本地读取一致性。Refs LifeArchiveProject#143
保留 AI 助手当前步骤的运行提示及终态图标。验证:Vitest 233 项、Node 62 项通过;Nuxt generate 完成 34 个路由;浏览器检查运行、折叠和完成状态通过。
执行过程入口仅保留文字与展开箭头,清理前置图标样式。验证:Vitest 233 项、Node 62 项通过;独立目录生产构建生成 34 个路由;浏览器验证完成态左对齐和展开收起。
@2977094657
2977094657 merged commit 225df5b into LifeArchiveProject:main Sep 9, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants